// pages/profile/profile.js
const { apiService } = require('../../utils/api')
const { showSuccess, showError, showLoading, hideLoading } = require('../../utils/util')

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null,
    userStats: null,
    isLoggedIn: false,
    isAdmin: false,
    menuItems: [
      {
        icon: '/images/icons/business.png',
        title: '我的任务',
        url: '/pages/tasks/tasks',
        showTab: 'claimed'
      },
      {
        icon: '/images/icons/goods.png',
        title: '我的作品',
        url: '/pages/my-works/my-works'
      },
      {
        icon: '/images/business-active.png',
        title: '收支记录',
        url: '/pages/settlements/settlements'
      },
      {
        icon: '/images/icons/setting.svg',
        title: '设置',
        url: '/pages/settings/settings'
      },
      {
        icon: '/images/icons/customer-service.svg',
        title: '联系客服',
        action: 'contact'
      }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.checkLoginStatus()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.checkLoginStatus()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadUserData()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '手工外发平台',
      path: '/pages/index/index'
    }
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const app = getApp()
    const isLoggedIn = app.isLoggedIn()
    const userInfo = app.getUserInfo()
    const isAdmin = app.isAdmin()

    this.setData({
      isLoggedIn,
      userInfo,
      isAdmin
    })

    if (isLoggedIn) {
      this.loadUserData()
    }
  },

  /**
   * 加载用户数据
   */
  async loadUserData() {
    if (!this.data.isLoggedIn) return

    try {
      // 加载用户信息
      const userInfo = await apiService.getUserProfile()

      // 加载用户统计
      const userStats = await apiService.getUserStats()

      this.setData({
        userInfo,
        userStats
      })

      wx.stopPullDownRefresh()
    } catch (error) {
      wx.stopPullDownRefresh()
      console.error('加载用户数据失败:', error)
    }
  },

  /**
   * 登录按钮点击
   */
  onLoginTap() {
    wx.navigateTo({
      url: '/pages/login/login'
    })
  },

  /**
   * 菜单项点击
   */
  onMenuItemTap(e) {
    const item = e.currentTarget.dataset.item

    if (!this.data.isLoggedIn && item.action !== 'contact') {
      wx.showModal({
        title: '提示',
        content: '请先登录',
        showCancel: false
      })
      return
    }

    if (item.action === 'contact') {
      this.contactCustomerService()
    } else {
      const url = item.url
      if (item.showTab) {
        wx.navigateTo({
          url: `${url}?tab=${item.showTab}`
        })
      } else {
        wx.navigateTo({
          url: url
        })
      }
    }
  },

  /**
   * 联系客服
   */
  contactCustomerService() {
    wx.showModal({
      title: '联系客服',
      content: '客服电话：400-123-4567\n工作时间：9:00-18:00',
      showCancel: true,
      cancelText: '取消',
      confirmText: '拨打电话',
      success: (res) => {
        if (res.confirm) {
          wx.makePhoneCall({
            phoneNumber: '4001234567',
            fail: () => {
              showError('拨打电话失败')
            }
          })
        }
      }
    })
  },

  /**
   * 退出登录
   */
  onLogout() {
    wx.showModal({
      title: '退出登录',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          const app = getApp()
          app.clearLoginStatus()

          this.setData({
            isLoggedIn: false,
            userInfo: null,
            userStats: null,
            isAdmin: false
          })

          showSuccess('已退出登录')
        }
      }
    })
  },

  /**
   * 管理员入口
   */
  onAdminTap() {
    wx.navigateTo({
      url: '/pages/admin/admin'
    })
  }
})